<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>组件的数据存放为什么是一个函数</title>
</head>
<body>
<div id="app">
  <cpn></cpn>
  <cpn></cpn>
  <cpn></cpn>
</div>

<template id="cpn">
  <div>
    <h2>当前数字为：{{count}}</h2>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
  </div>
</template>

<script src="../js/vue.js"></script>
<script>

  const obj = {
    count: 0
  }
  // 因为函数的每次调用都是不同的，Vue希望每个组件都有一个独立的数据环境
  Vue.component('cpn', {
    template: '#cpn',
    // 这是正常情况下的写法，每个组件的数据都是独立的，其中一个组件的值发生改变不会对其他组件造成影响
    data() {
      return {
        count: 0
      }
    },
    // 这是当需要所有组件共用同一个数据环境的时候这样写，一个组件的值发生改变，其他组件都会改变
    /*data() {
      return obj
    },*/
    methods: {
      increment() {
        this.count++
      },
      decrement() {
        this.count--
      }
    }
  });

  const app = new Vue({
    el: '#app',
    data: {}
  });
</script>
</body>
</html>
